home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / pointer.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  3KB  |  122 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16. #line 15 "pointer.d"
  17. #include <math.h> 
  18.  
  19. #define    CLASS    Pointer_c
  20. #define    ivType    Pointer_iv_t
  21.  
  22. #include "generics.h"
  23.  
  24. object    Pointer_c;
  25.  
  26.  
  27. #line 28 "pointer.c"
  28. typedef struct  _Pointer_iv_t  {
  29.     void * iVal;
  30. }    Pointer_iv_t;
  31.  
  32.  
  33.  
  34. #line 21 "pointer.d"
  35. cmeth objrtn Pointer_cm_gNewWithPtr(object self, void *val)
  36.     object obj = oSuper(Pointer_c, gNew, self)(self); 
  37.     ivType *iv = ivPtr(obj); 
  38.     iv->iVal = val; 
  39.     return(obj); 
  40.  
  41. imeth void * Pointer_im_gPointerValue(object self)
  42. { Pointer_iv_t *iv = GetIVs(Pointer, self);
  43.     return iv->iVal; 
  44.  
  45. imeth objrtn Pointer_im_gChangeValue(object self, object val)
  46. { Pointer_iv_t *iv = GetIVs(Pointer, self);
  47.     iv->iVal = (void *) val; 
  48.     return self; 
  49.  
  50. imeth int Pointer_im_gHash(object self)
  51. { Pointer_iv_t *iv = GetIVs(Pointer, self);
  52.     double t; 
  53.  
  54.     t = .6125423371 * (double) (unsigned long) iv->iVal; 
  55.     t = t < 0.0 ? -t : t; 
  56.     return (int) (BIG_INT * (t - floor(t))); 
  57.  
  58. imeth int Pointer_im_gCompare(object self, object obj)
  59. { Pointer_iv_t *iv = GetIVs(Pointer, self);
  60.     void *sv, *ov; 
  61.  
  62.     ChkArg(obj, 2); 
  63.     if (ClassOf(obj) != CLASS) 
  64.         return oSuper(Pointer_c, gCompare, self)(self, obj); 
  65.     if ((sv=iv->iVal) < (ov=ivPtr(obj)->iVal)) 
  66.         return -1; 
  67.     else if (sv == ov) 
  68.         return 0; 
  69.     else 
  70.         return 1; 
  71.  
  72. imeth objrtn Pointer_im_gStringRepValue(object self)
  73. { Pointer_iv_t *iv = GetIVs(Pointer, self);
  74.     return vSprintf(String, "%lp", iv->iVal); 
  75.  
  76.  
  77. #line 85 "pointer.c"
  78.  
  79. objrtn    Pointer_initialize(void)
  80. {
  81.     static  CRITICALSECTION  cs;
  82.     static  int volatile once = 0;
  83.  
  84.     ENTERCRITICALSECTION(_CI_CS_);
  85.     if (!once) {
  86.         INITIALIZECRITICALSECTION(cs);
  87.         once = 1;
  88.     }
  89.     LEAVECRITICALSECTION(_CI_CS_);
  90.  
  91.     ENTERCRITICALSECTION(cs);
  92.  
  93.     if (Pointer_c) {
  94.         LEAVECRITICALSECTION(cs);
  95.         return Pointer_c;
  96.     }
  97.     INHIBIT_THREADER;
  98.     Pointer_c = gNewClass(Class, "Pointer", sizeof(Pointer_iv_t), 0, END);
  99.     cMethodFor(Pointer, gNewWithPtr, Pointer_cm_gNewWithPtr);
  100.     iMethodFor(Pointer, gCompare, Pointer_im_gCompare);
  101.     iMethodFor(Pointer, gPointerValue, Pointer_im_gPointerValue);
  102.     iMethodFor(Pointer, gStringRepValue, Pointer_im_gStringRepValue);
  103.     iMethodFor(Pointer, gHash, Pointer_im_gHash);
  104.     iMethodFor(Pointer, gChangeValue, Pointer_im_gChangeValue);
  105.  
  106.     ENABLE_THREADER;
  107.  
  108.     LEAVECRITICALSECTION(cs);
  109.  
  110.     return Pointer_c;
  111. }
  112.  
  113.  
  114.  
  115.